//
//  SYNetworking.h
//  ffnetworking
//
//  Created by huchu on 2018/5/15.
//  Copyright © 2018年 sysjones. All rights reserved.
//

#import <Foundation/Foundation.h>
@class RACSignal;

typedef NS_ENUM(NSInteger,SYNetworkingRequestType) {
    SYNetworkingRequestType_AFHTTPRequestSerializer,
    SYNetworkingRequestType_AFJSONRequestSerializer,
    SYNetworkingRequestType_AFPropertyListRequestSerializer
};

typedef NS_ENUM(NSInteger,SYNetworkingReponseType) {
    SYNetworkingResponseType_AFJSONResponseSerializer,
    SYNetworkingResponseType_AFHTTPResponseSerializer,
    SYNetworkingResponseType_AFImageResponseSerializer,
    SYNetworkingResponseType_AFCompoundResponseSerializer,
    SYNetworkingResponseType_AFXMLParserResponseSerializer,
    SYNetworkingResponseType_AFPropertyListResponseSerializer
};


/**
 对AFNetworking封装
  提供RACSignal数据流转化
 文件上传，下载查看https://github.com/AFNetworking/AFNetworking.git实例
 可以直接调用AFNetworkingManager完成
 */
@interface SYNetworking : NSObject



/**
 api请求
 请求数据格式 默认为JSON数据格式
 */
+ (void)postWithURL:(NSString *)urlstring
       noSignParams:(NSDictionary *)params
    completionblock:(void (^)(NSDictionary *resultDict))completionBlock
        failedBlock:(void (^)(NSError *error))failedBlock;



/**
 urlstring：api请求地址
 requestType： 请求数据格式
 responseType： 响应数据解析格式
 */
+ (void)postWithURL:(NSString *)urlstring
        requestType:(SYNetworkingRequestType)requestType
       responseType:(SYNetworkingReponseType)responseType
             params:(NSDictionary *)params
    completionblock:(void (^)(NSDictionary *resultDict))completionBlock
        failedBlock:(void (^)(NSError *error))failedBlock;

/**
 api请求
 请求数据格式 默认为JSON数据格式
 */
+(RACSignal *)rac_postURL:(NSString *)url
                   params:(NSDictionary*)params;
/**
 api请求
 请求数据格式 默认为JSON数据格式
 */
+(RACSignal *)rac_postURL:(NSString *)url
                   params:(NSDictionary*)params retry:(NSInteger)tryCount interval:(NSTimeInterval)interval;




/**
 url: api请求地址
 requestType： 请求数据格式
 responseType： 应答数据解析格式
 params： 请求数据
 */
+(RACSignal *)rac_postURL:(NSString *)url
              requestType:(SYNetworkingRequestType)requestType
             responseType:(SYNetworkingReponseType)responseType
                   params:(NSDictionary*)params;


/**
 url: api请求地址
 requestType： 请求数据格式
 responseType： 应答数据解析格式
 params： 请求数据
 retry： 失败重试请求次数
 interval： 失败重试请求间隔时间 秒为单位
 */
+(RACSignal *)rac_postURL:(NSString *)url
              requestType:(SYNetworkingRequestType)requestType
             responseType:(SYNetworkingReponseType)responseType
                   params:(NSDictionary*)params retry:(NSInteger)tryCount interval:(NSTimeInterval)interval;




@end
